package com.browsesoft.dbtools;

/**
 * 字段转化的格式
 */
public class FieldFormat {
	/**
	 * 模式 值为“String”时是字符串分割模式 值为"number"时按位值分割模式
	 */
	String mode = "";

	/**
	 * 按位分割模式下的开始位置
	 */

	int nBegin = -1;

	/**
	 * 按位分割模式下的结束位置
	 */
	int nEnd = -1;

	/**
	 * 按位分割模式下的开始位置
	 */
	String sBegin = null;

	/**
	 * 按位分割模式下的结束位置
	 */

	String sEnd = null;

	/**
	 * 构造方法
	 */
	public FieldFormat() {
		this.mode = "number";
	}

	/**
	 * 对字段的内容按格式取值
	 */
	public String getFormatValue(String value) {
		String s = null;
		// 如果是数字模式
		if (this.mode.equals("number")) {
			s = this.getNumberFormatValue(value);
		}
		// 如果是字符串模式
		else if (this.mode.equals("string")) {
			s = this.getStringFormatValue(value);
		}
		return s;
	}

	/**
	 * 按位置取值
	 */
	private String getNumberFormatValue(String value) {
		// 如果开始位置和结束位置都没有指定，全部返回
		if (this.nBegin == -1 && this.nEnd == -1) {
			return value;
		}
		// 如果结束位置指-1,就取得字符串的末尾
		else if (this.nEnd == -1) {
			return value.substring(this.nBegin, value.length());
		} else {
			return value.substring(this.nBegin, this.nEnd);
		}
	}

	/**
	 * 
	 */
	private String getStringFormatValue(String value) {
		// 如果开始位置和结束位置都没有指定，全部返回
		if (this.sBegin == null && this.sEnd == null) {
			return value;
		}
		// 如果开始位置为空，从开头取
		if (this.sBegin == null) {
			return value.substring(0, value.indexOf(sEnd));
		}
		// 如果没有结束位置，取到最后
		else if (this.sEnd == null) {
			return value.substring(value.indexOf(this.sBegin)
					+ this.sBegin.length());
		}
		// 否则从指定位置取
		else {
			return value.substring(value.indexOf(sBegin) + sBegin.length(),
					value.indexOf(sEnd));
		}
	}
}